package com.sg.dto.biz.bff.common;

import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import java.io.Serializable;
import java.util.Objects;


/**
 * @desc BffTargetObjDutyBodyDto
 * @使用场景
 */
@Data
public class BffTargetObjDutyBodyDto implements Serializable {

    /**
     * 指标ID
     */
    @ApiModelProperty("指标ID")
    private String objectiveId;

    /**
     * 指标标识
     */
    @ApiModelProperty("指标标识")
    private String objectiveCode;

    /**
     * 指标简称
     */
    @ApiModelProperty("指标简称")
    private String objectiveShortName;

    /**
     * 层级
     */
    @ApiModelProperty("层级")
    private Long levelNumber;

    /**
     * 排序
     */
    @ApiModelProperty("排序")
    private Long orderNumber;

    /**
     * 虚拟组织下部门ID
     */
    @ApiModelProperty("虚拟组织下部门ID")
    private String deptId;

    /**
     * 部门简称
     */
    @ApiModelProperty("部门简称")
    private String deptShortName;

    /**
     * 虚拟组织成员就职记录ID
     */
    @ApiModelProperty("虚拟组织成员就职记录ID")
    private String virtualOrgInductionRecordId;

    /**
     * 真实头像
     */
    @ApiModelProperty("真实头像")
    private String userFace;

    /**
     * 真实姓名
     */
    @ApiModelProperty("真实姓名")
    private String idCardName;

    /**
     * 用户昵称
     */
    @ApiModelProperty("用户昵称")
    private String nickName;

    /**
     * 职务信息展示
     */
    @ApiModelProperty("职务信息展示")
    private String positionIdName;
    /**
     * 责任主体类型 PERSONAL:个人 DEPT:部门
     */
    @ApiModelProperty("责任主体类型")
    private String respBodyType;
    /**
     * 指标扩展规划设置ID
     */
    @ApiModelProperty("指标扩展规划设置ID")
    private String objectivePlanningExtendId;

    /**
     * 批次下更新状态 NEW:本次新增 UNCHANGED:正常未变 REVISION:本次修订 ARCHIVE:本次存档
     */
    @ApiModelProperty("批次下更新状态")
    private String updateStatus;

    /**
     * 主体生命周期 CURRENTLY_VALID:当前有效 EDITING:正在编辑 ARCHIVING:历史存档
     */
    @ApiModelProperty("主体生命周期")
    private String subjectLifeCycle;

    /**
     * 存档类型 NOT_ARCHIVE:未归档 TOBE_ARCHIVING:想归档 ARCHIVED:已归档
     */
    @ApiModelProperty("存档类型")
    private String archivngType;

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        if (!super.equals(o)) return false;
        BffTargetObjDutyBodyDto that = (BffTargetObjDutyBodyDto) o;
        return objectiveId == that.objectiveId && objectiveCode == that.objectiveCode && objectiveShortName == that.objectiveShortName && levelNumber == that.levelNumber && orderNumber == that.orderNumber && deptId == that.deptId && deptShortName == that.deptShortName && virtualOrgInductionRecordId == that.virtualOrgInductionRecordId && userFace == that.userFace && idCardName == that.idCardName && nickName == that.nickName && positionIdName == that.positionIdName && respBodyType == that.respBodyType && objectivePlanningExtendId == that.objectivePlanningExtendId && updateStatus == that.updateStatus && subjectLifeCycle == that.subjectLifeCycle && archivngType == that.archivngType;
    }

    @Override
    public int hashCode() {
        return Objects.hash(super.hashCode(), objectiveId, objectiveCode, objectiveShortName, levelNumber, orderNumber, deptId, deptShortName, virtualOrgInductionRecordId, userFace, idCardName, nickName, positionIdName, respBodyType, objectivePlanningExtendId, updateStatus, subjectLifeCycle, archivngType);
    }


}
   